package com.iot.service.mqtt.service.session;

import com.iot.service.mqtt.model.TlMqttSession;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * @Author: hszhou
 * @Date: 2025/1/7 9:32
 * @Description: 必须描述类做什么事情, 实现什么功能
 */
public interface ISessionService {

    /**
     * 保存会话
     *
     * @param session 会话
     * @return 会话
     */
    Mono<Boolean> save(TlMqttSession session);

    /**
     * 通过 clientId 获取会话
     * @param clientId 客户端id
     * @return 会话
     */
    Mono<TlMqttSession> find(String clientId);

    /**
     * 清理会话
     *
     * @param clientId 客户端
     * @return 是否清除成功
     */
    Mono<Boolean> clear(String clientId);

    /**
     * 返回所有的客户端雷彪
     *
     * @return 客户端列表
     */
    Flux<String> clients();

}
